package cn.bugDance.api.activity.controller;

import cn.bugDance.api.activity.dto.*;
import cn.bugDance.types.response.Response;

import java.util.List;

public interface IRaffleActivityController {

    /**
     *  活动抽奖
     * @param raffleActivityRequestDTO
     * @return
     */
    Response<RaffleActivityResponseDTO> randomRaffle(RaffleActivityRequestDTO raffleActivityRequestDTO);

    Response<String> activityAssemble(Long sku);

    Response<List<RaffleActivityAwardListDTO>> queryActivityAwardList(Long activityId, String userId);

    Response<Boolean> calendarSignRebate(String userId, Long activityId);

    Response<RaffleActivityAccountResponseDTO> queryActivityAccount(RaffleActivityRequestDTO raffleActivityRequestDTO);

    /**
     * 查询用户抽奖总次数和活动配置的策略权重
     * @param raffleActivityRequestDTO
     * @return
     */
    Response<List<RaffleStrategyRuleWeightResponseDTO>> queryRaffleStrategyRuleWeight(RaffleActivityRequestDTO raffleActivityRequestDTO);

    Response<Boolean> isCalendarSignRebate(String userId, Long activityId);

    /**
     * 查询用户积分账户
     * @param userId 用户ID
     * @return 可用积分
     */
    Response<Integer> queryUserAvailableCreditAmount(String userId);

    /**
     * 查询指定活动ID对应的可兑换的sku
     * @param activityId 活动ID
     * @return 可兑换的sku列表
     */
    Response<List<RechargeActivitySkuResponseDTO>> queryRechargeActivitySkus(Long activityId);

    /**
     * 积分兑换sku
     * @param creditRechargeRequestDTO 兑换信息
     * @return 是否成功兑换
     */
    Response<Boolean> creditRecharge(CreditRechargeRequestDTO creditRechargeRequestDTO);

}
